package proxy.cglib;

import net.sf.cglib.proxy.Enhancer;
import proxy.SmsService;
import proxy.SmsServiceImpl;

/**
 * @Author: DRevelation
 * @Date: 2021/3/31 17:54
 */
public class CglibProxyFactory {
    public static Object getProxy(Class<?> clazz) {
        //创建动态代理增强类
        Enhancer enhancer = new Enhancer();
        //设置类加载器
        enhancer.setClassLoader(clazz.getClassLoader());
        //设置被代理类
        enhancer.setSuperclass(clazz);
        //设置方法拦截器
        enhancer.setCallback(new DebugMethodInterceptor());
        //创建代理类
        return enhancer.create();
    }

    public static void main(String[] args) {
        SmsService smsService = (SmsService) CglibProxyFactory.getProxy(SmsServiceImpl.class);
        smsService.send("java");
    }
}
